package org.example.campusforum.service.impl;

import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
import org.example.campusforum.dto.CommentPublish;
import org.example.campusforum.entity.Comment;
import org.example.campusforum.mapper.CommentMapper;
import org.example.campusforum.service.CommentService;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service;

/**
 * 评论服务实现类
 *
 * 实现评论相关的业务逻辑，包括评论的发布等功能。
 * 继承ServiceImpl提供基础的CRUD操作，实现CommentService接口。
 *
 * @author CampusForum Team
 * @version 1.0
 * @since 2024
 */
@Service
public class CommentServiceImpl extends ServiceImpl<CommentMapper, Comment> implements CommentService {

    /**
     * 评论数据访问层
     */
    @Autowired
    private CommentMapper commentMapper;

    /**
     * 发布评论
     *
     * 根据评论发布DTO创建新评论，支持顶级评论和回复评论。
     * 使用Builder模式构建评论实体对象并保存到数据库。
     *
     * @param comment 评论发布信息，包含文章ID、评论内容、父评论ID等
     */
    @Override
    public void save(CommentPublish comment) {
        // 使用Builder模式构建评论实体对象
        Comment comment1 = Comment.builder()
                .articleId(comment.getArticleId())       // 所属文章ID
                .content(comment.getContent())           // 评论内容
                .parentId(comment.getParentId())         // 父评论ID（0表示顶级评论）
                .postUserId(comment.getPostUserId())     // 发表评论的用户ID
                .replyUserId(comment.getReplyUserId())   // 被回复的用户ID（可为空）
                .build();

        // 保存评论到数据库
        commentMapper.insert(comment1);
    }
}